package com.lzyyj.gmis.base.model;

import java.io.Serializable;
import java.util.List;
import java.util.Set;

/**
 * 功能权限模型
 * @author lzyyj
 *
 * @param <PK>
 */
public interface IPurview<PK extends Serializable> extends Serializable {
	
	/**
	 * 获得下级功能权限列表
	 * @return
	 */
	public List<IPurview<PK>> getPurviews();

	/**
	 * 设置下级功能权限列表
	 * @param purviews
	 */
	public void setPurviews(List<IPurview<PK>> purviews);

	// Property accessors

	// 上一级功能权限，第一级为功能模块
	
	/**
	 * 获得上级功能权限
	 * @return
	 */
	public IPurview<PK> getParent();

	public void setParent(IPurview<PK> parent);

	// 排序编号
	public Integer getOrderNo();

	public void setOrderNo(Integer orderNo);

	// 功能权限名称
	
	public String getName();

	public void setName(String name);

	// 功能权限描述
	
	public String getDescription();

	public void setDescription(String description);

	// 功能权限标识
	
	public String getPurviewKey();

	public void setPurviewKey(String purviewKey);

	/**
	 * 获得所有上级功能权限列表
	 * @return
	 */
	public List<IPurview<PK>> getParentList();

	/**
	 * 获得所属功能模块，顶级功能权限即为功能模块
	 * @return
	 */
	public IPurview<PK> getModule();

	/**
	 * 获得所属模块Key
	 * @return
	 */
	public String getModuleKey();
	
	/**
	 * 获得当前功能权限级别，1级为功能模块
	 * @return
	 */
	public int getLevel();
		
}
